
#include <mandragora/astro/astronomy.h>
#include "astronomy_data.h"


astro_orbit astro_mercury = {
	2446800.5,7.0048,48.177,29.074,0.387098,4.09236,0.205628,198.7199,2446800.5,-0.42,3.36,0.0,0.0,0.0,
	&mer404
};

astro_orbit astro_venus = {
	2446800.5,3.3946,76.561,54.889,0.723329,1.60214,0.006757,9.0369,2446800.5,-4.40,8.34,0.0,0.0,0.0,
	&ven404
};

astro_orbit astro_earth = {
	2446800.5,0.0,0.0,102.884,0.999999,0.985611,0.016713,1.1791,2446800.5,-3.86,0.0,0.0,0.0,0.0,
	&ear404
};

astro_orbit astro_mars = {
	2446800.5,1.8498,49.457,286.343,1.523710,0.524023,0.093472,53.1893,2446800.5,-1.52,4.68,0.0,0.0,0.0,
	&mar404
};

astro_orbit astro_jupiter = {
	2446800.5,1.3051,100.358,275.129,5.20265,0.0830948,0.048100,344.5086,2446800.5,-9.40,98.44,0.0,0.0,0.0,
	&jup404
};

astro_orbit astro_saturn = {
	2446800.5,2.4858,113.555,337.969,9.54050,0.0334510,0.052786,159.6327,2446800.5,-8.88,82.73,0.0,0.0,0.0,
	&sat404
};

astro_orbit astro_uranus = {
	2446800.5,0.7738,73.994,98.746,19.2233,0.0116943,0.045682,84.8516,2446800.5,-7.19,35.02,0.0,0.0,0.0,
	&ura404
};

astro_orbit astro_neptune = {
	2446800.5,1.7697,131.677,250.623,30.1631,0.00594978,0.009019,254.2568,2446800.5,-6.87,33.50,0.0,0.0,0.0,
	&nep404
};

astro_orbit astro_pluto = {
	2446640.5,17.1346,110.204,114.21,39.4633,0.00397570,0.248662,355.0554,2446640.5,-1.0,2.07,0.0,0.0,0.0,
	&plu404
};

// A, Ad and matrix are used by fk4_to_fk5() only.
const double A[3] = { -1.62557e-6,-3.1919e-7,- 1.3843e-7 };
const double Ad[3] = { 1.244e-3,-1.579e-3,-6.60e-4 };
const double matrix[36] = {
	0.9999256782,-0.0111820611,-4.8579477e-3,2.42395018e-6,-2.710663e-8,-1.177656e-8,0.0111820610,0.9999374784,
	-2.71765e-5,2.710663e-8,2.42397878e-6,-6.587e-11,4.8579479e-3,-2.71474e-5,0.9999881997,1.177656e-8,-6.582e-11,
	2.42410173e-6,-5.51e-4,-0.238565,0.435739,0.99994704,-0.01118251,-4.85767e-3,0.238514,-2.667e-3,-8.541e-3,
	0.01118251,0.99995883,-2.718e-5,-0.435623,0.012254,2.117e-3,4.85767e-3,-2.714e-5,1.00000956
};

const short nutation_table[105*9] = {
	0,0,0,0,2,2062,2,-895,5,
	-2,0,2,0,1,46,0,-24,0,
	2,0,-2,0,0,11,0,0,0,
	-2,0,2,0,2,-3,0,1,0,
	1,-1,0,-1,0,-3,0,0,0,
	0,-2,2,-2,1,-2,0,1,0,
	2,0,-2,0,1,1,0,0,0,
	0,0,2,-2,2,-13187,-16,5736,-31,
	0,1,0,0,0,1426,-34,54,-1,
	0,1,2,-2,2,-517,12,224,-6,
	0,-1,2,-2,2,217,-5,-95,3,
	0,0,2,-2,1,129,1,-70,0,
	2,0,0,-2,0,48,0,1,0,
	0,0,2,-2,0,-22,0,0,0,
	0,2,0,0,0,17,-1,0,0,
	0,1,0,0,1,-15,0,9,0,
	0,2,2,-2,2,-16,1,7,0,
	0,-1,0,0,1,-12,0,6,0,
	-2,0,0,2,1,-6,0,3,0,
	0,-1,2,-2,1,-5,0,3,0,
	2,0,0,-2,1,4,0,-2,0,
	0,1,2,-2,1,4,0,-2,0,
	1,0,0,-1,0,-4,0,0,0,
	2,1,0,-2,0,1,0,0,0,
	0,0,-2,2,1,1,0,0,0,
	0,1,-2,2,0,-1,0,0,0,
	0,1,0,0,2,1,0,0,0,
	-1,0,0,1,1,1,0,0,0,
	0,1,2,-2,0,-1,0,0,0,
	0,0,2,0,2,-2274,-2,977,-5,
	1,0,0,0,0,712,1,-7,0,
	0,0,2,0,1,-386,-4,200,0,
	1,0,2,0,2,-301,0,129,-1,
	1,0,0,-2,0,-158,0,-1,0,
	-1,0,2,0,2,123,0,-53,0,
	0,0,0,2,0,63,0,-2,0,
	1,0,0,0,1,63,1,-33,0,
	-1,0,0,0,1,-58,-1,32,0,
	-1,0,2,2,2,-59,0,26,0,
	1,0,2,0,1,-51,0,27,0,
	0,0,2,2,2,-38,0,16,0,
	2,0,0,0,0,29,0,-1,0,
	1,0,2,-2,2,29,0,-12,0,
	2,0,2,0,2,-31,0,13,0,
	0,0,2,0,0,26,0,-1,0,
	-1,0,2,0,1,21,0,-10,0,
	-1,0,0,2,1,16,0,-8,0,
	1,0,0,-2,1,-13,0,7,0,
	-1,0,2,2,1,-10,0,5,0,
	1,1,0,-2,0,-7,0,0,0,
	0,1,2,0,2,7,0,-3,0,
	0,-1,2,0,2,-7,0,3,0,
	1,0,2,2,2,-8,0,3,0,
	1,0,0,2,0,6,0,0,0,
	2,0,2,-2,2,6,0,-3,0,
	0,0,0,2,1,-6,0,3,0,
	0,0,2,2,1,-7,0,3,0,
	1,0,2,-2,1,6,0,-3,0,
	0,0,0,-2,1,-5,0,3,0,
	1,-1,0,0,0,5,0,0,0,
	2,0,2,0,1,-5,0,3,0,
	0,1,0,-2,0,-4,0,0,0,
	1,0,-2,0,0,4,0,0,0,
	0,0,0,1,0,-4,0,0,0,
	1,1,0,0,0,-3,0,0,0,
	1,0,2,0,0,3,0,0,0,
	1,-1,2,0,2,-3,0,1,0,
	-1,-1,2,2,2,-3,0,1,0,
	-2,0,0,0,1,-2,0,1,0,
	3,0,2,0,2,-3,0,1,0,
	0,-1,2,2,2,-3,0,1,0,
	1,1,2,0,2,2,0,-1,0,
	-1,0,2,-2,1,-2,0,1,0,
	2,0,0,0,1,2,0,-1,0,
	1,0,0,0,2,-2,0,1,0,
	3,0,0,0,0,2,0,0,0,
	0,0,2,1,2,2,0,-1,0,
	-1,0,0,0,2,1,0,-1,0,
	1,0,0,-4,0,-1,0,0,0,
	-2,0,2,2,2,1,0,-1,0,
	-1,0,2,4,2,-2,0,1,0,
	2,0,0,-4,0,-1,0,0,0,
	1,1,2,-2,2,1,0,-1,0,
	1,0,2,2,1,-1,0,1,0,
	-2,0,2,4,2,-1,0,1,0,
	-1,0,4,0,2,1,0,0,0,
	1,-1,0,-2,0,1,0,0,0,
	2,0,2,-2,1,1,0,-1,0,
	2,0,2,2,2,-1,0,0,0,
	1,0,0,2,1,-1,0,0,0,
	0,0,4,-2,2,1,0,0,0,
	3,0,2,-2,2,1,0,0,0,
	1,0,2,-2,0,-1,0,0,0,
	0,1,2,0,1,1,0,0,0,
	-1,-1,0,2,1,1,0,0,0,
	0,0,-2,0,1,-1,0,0,0,
	0,0,2,-1,2,-1,0,0,0,
	0,1,0,2,0,-1,0,0,0,
	1,0,-2,-2,0,-1,0,0,0,
	0,-1,2,0,1,-1,0,0,0,
	1,1,0,-2,1,-1,0,0,0,
	1,0,-2,2,0,-1,0,0,0,
	2,0,0,2,0,1,0,0,0,
	0,0,2,4,2,-1,0,0,0,
	0,1,0,1,0,1,0,0,0,
};


const double freqs[] = {
	53810162868.8982,
	21066413643.3548,
	12959774228.3429,
	6890507749.3988,
	1092566037.7991,
	439960985.5372,
	154248119.3933,
	78655032.0744,
	52272245.1795
};

const double phases[] = {
	252.25090552*3600.,
	181.97980085*3600.,
	100.46645683*3600.,
	355.43299958*3600.,
	34.35151874*3600.,
	50.07744430*3600.,
	314.05500511*3600.,
	304.34866548*3600.,
	860492.1546,
};

const short delta_table[TABSIZ] = {
	/* 1620.0 thru 1659.0 */
	12400,11900,11500,11000,10600,10200,9800,9500,9100,8800,
	8500,8200,7900,7700,7400,7200,7000,6700,6500,6300,
	6200,6000,5800,5700,5500,5400,5300,5100,5000,4900,
	4800,4700,4600,4500,4400,4300,4200,4100,4000,3800,
	/* 1660.0 thru 1699.0 */
	3700,3600,3500,3400,3300,3200,3100,3000,2800,2700,
	2600,2500,2400,2300,2200,2100,2000,1900,1800,1700,
	1600,1500,1400,1400,1300,1200,1200,1100,1100,1000,
	1000,1000,900,900,900,900,900,900,900,900,
	/* 1700.0 thru 1739.0 */
	900,900,900,900,900,900,900,900,1000,1000,
	1000,1000,1000,1000,1000,1000,1000,1100,1100,1100,
	1100,1100,1100,1100,1100,1100,1100,1100,1100,1100,
	1100,1100,1100,1100,1200,1200,1200,1200,1200,1200,
	/* 1740.0 thru 1779.0 */
	1200,1200,1200,1200,1300,1300,1300,1300,1300,1300,
	1300,1400,1400,1400,1400,1400,1400,1400,1500,1500,
	1500,1500,1500,1500,1500,1600,1600,1600,1600,1600,
	1600,1600,1600,1600,1600,1700,1700,1700,1700,1700,
	/* 1780.0 thru 1799.0 */
	1700,1700,1700,1700,1700,1700,1700,1700,1700,1700,
	1700,1700,1600,1600,1600,1600,1500,1500,1400,1400,
	/* 1800.0 thru 1819.0 */
	1370,1340,1310,1290,1270,1260,1250,1250,1250,1250,
	1250,1250,1250,1250,1250,1250,1250,1240,1230,1220,
	/* 1820.0 thru 1859.0 */
	1200,1170,1140,1110,1060,1020,960,910,860,800,
	750,700,660,630,600,580,570,560,560,560,
	570,580,590,610,620,630,650,660,680,690,
	710,720,730,740,750,760,770,770,780,780,
	/* 1860.0 thru 1899.0 */
	788,782,754,697,640,602,541,410,292,182,
	161,10,-102,-128,-269,-324,-364,-454,-471,-511,
	-540,-542,-520,-546,-546,-579,-563,-564,-580,-566,
	-587,-601,-619,-664,-644,-647,-609,-576,-466,-374,
	/* 1900.0 thru 1939.0 */
	-272,-154,-2,124,264,386,537,614,775,913,
	1046,1153,1336,1465,1601,1720,1824,1906,2025,2095,
	2116,2225,2241,2303,2349,2362,2386,2449,2434,2408,
	2402,2400,2387,2395,2386,2393,2373,2392,2396,2402,
	/* 1940.0 thru 1979.0 */
	2433,2483,2530,2570,2624,2677,2728,2778,2825,2871,
	2915,2957,2997,3036,3072,3107,3135,3168,3218,3268,
	3315,3359,3400,3447,3503,3573,3654,3743,3829,3920,
	4018,4117,4223,4337,4449,4548,4646,4752,4853,4959,
	/* 1980.0 thru 2003.0 */
	5054,5138,5217,5296,5379,5434,5487,5532,5582,5630,
	5686,5757,5831,5912,5998,6078,6163,6230,6297,6347,
	6383,6409,6430,6447,
	/* Extrapolated values */
	                    6456,6600,6700,6800,6900,7000,
	7100,7200,7300,7400,
};


#if WILLIAMS
const double pAcof[] = {
#if 1
	-8.66e-10,-4.759e-8,2.424e-7,1.3095e-5,1.7451e-4,-1.8055e-3,-0.235316,0.076,110.5414,50287.91959
#else
	-8.66e-10,-4.759e-8,2.424e-7,1.3095e-5,1.7451e-4,-1.8055e-3,-0.235316,0.076,110.5407,50287.70000
#endif
};
#endif
#if SIMON
const double pAcof[] = {
	-8.66e-10,-4.759e-8,2.424e-7,1.3095e-5,1.7451e-4,-1.8055e-3,-0.235316,0.07732,111.2022,50288.200
};
#endif
#if LASKAR
const double pAcof[] = {
	-8.66e-10,-4.759e-8,2.424e-7,1.3095e-5,1.7451e-4,-1.8055e-3,-0.235316,0.07732,111.1971,50290.966
};
#endif
#if WILLIAMS
const double nodecof[] = {
	6.6402e-16,-2.69151e-15,-1.547021e-12,7.521313e-12,1.9e-10,
	-3.54e-9,-1.8103e-7, 1.26e-7, 7.436169e-5,-0.04207794833, 3.052115282424
};
const double inclcof[] = {
	1.2147e-16,7.3759e-17,-8.26287e-14,2.503410e-13,2.4650839e-11,
	-5.4000441e-11,1.32115526e-9,-6.012e-7,-1.62442e-5,0.00227850649,0.0
};
#endif
#if SIMON
const double nodecof[] = {
	6.6402e-16,-2.69151e-15,-1.547021e-12,7.521313e-12,1.9e-10,
	-3.54e-9,-1.8103e-7,2.579e-8,7.4379679e-5,-0.0420782900,3.0521126906
};
const double inclcof[] = {
	1.2147e-16,7.3759e-17,-8.26287e-14,2.503410e-13,2.4650839e-11,
	-5.4000441e-11,1.32115526e-9,-5.99908e-7,-1.624383e-5,0.002278492868,0.0
};
#endif
#if LASKAR
const double nodecof[] = {
	6.6402e-16,-2.69151e-15,-1.547021e-12,7.521313e-12,6.3190131e-10,
	-3.48388152e-9,-1.813065896e-7,2.75036225e-8,7.4394531426e-5,-0.042078604317,3.052112654975
};
const double inclcof[] = {
	1.2147e-16,7.3759e-17,-8.26287e-14,2.503410e-13,2.4650839e-11,
	-5.4000441e-11,1.32115526e-9,-5.998737027e-7,-1.6242797091e-5,0.002278495537,0.0
};
#endif


const char *constel[NCON] = {
	"Andromedae","Antliae","Apodis","Aquilae","Aquarii","Arietis","Arae","Aurigae",
	"Bootis","Caeli","Camelopardalis","Cancri",
	"Capricorni","Carinae","Cassiopeiae","Centauri","Cephei","Ceti","Chamaeleontis",
	"Circini","Canis Majoris","Canis Minoris","Cancri","Columbae","Comae Berenices",
	"Coronae Austrinae","Coronae Borealis","Crateris","Crucis","Corvi","Canum Venaticorum",
	"Cygni","Delphini","Doradus","Draconis","Equulei","Eridani","Fornacis",
	"Geminorum","Gruis","Herculis","Horologii","Hydrae","Hydri","Indi",
	"Lacertae","Leonis","Leporis","Librae","Leonis Minoris","Lupi","Lyncis",
	"Lyrae","Mensae","Microscopii","Monocerotis","Muscae","Normae","Octantis",
	"Ophiuchi","Orionis","Pavonis","Pegasi","Persei","Phoenicis","Pictoris",
	"Piscis Austrini","Piscium","Puppis","Pyxidis","Reticuli","Sculptoris",
	"Scorpii","Scuti","Serpentis","Sextantis","Sagittae","Sagittarii","Tauri",
	"Telescopii","Trianguli Australis","Trianguli","Tucanae","Ursae Majoris",
	"Ursae Minoris","Velorum","Virginis","Volantis","Vulpeculae",
};

const char *constel_abbr[NCON] = {
	"And","Ant","Aps","Aql","Aqr","Ari","Ara","Aur",
	"Boo","Cae","Cam","Can",		/* also abbreviated Cnc */
	"Cap","Car","Cas","Cen","Cep","Cet","Cha",
	"Cir","CMa","CMi","Cnc","Col","Com",
	"CrA","CrB","Crt","Cru","Crv","CVn",
	"Cyg","Del","Dor","Dra","Equ","Eri","For",
	"Gem","Gru","Her","Hor","Hya","Hyi","Ind",
	"Lac","Leo","Lep","Lib","LMi","Lup","Lyn",
	"Lyr","Men","Mic","Mon","Mus","Nor","Oct",
	"Oph","Ori","Pav","Peg","Per","Phe","Pic",
	"PsA","Psc","Pup","Pyx","Ret","Scl",
	"Sco","Sct","Ser","Sex","Sge","Sgr","Tau",
	"Tel","TrA","Tri","Tuc","UMa",
	"UMi","Vel","Vir","Vol","Vul",
};

const char *greek[NGREEK] = {
	"alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi",
	"omicron","pi","rho","sigma","tau","upsilon","phi","chi","psi","omega",
};


const long bndries[4*NBNDRIES] = {
     0, 86400,316800, 84,
 28800, 52200,311400, 84,
 75600, 82800,310200, 84,
 64800, 75600,309600, 84,
     0, 28800,306000, 16,
 33000, 38400,295200, 10,
     0, 18000,288000, 16,
 38400, 52200,288000, 10,
 63000, 64800,288000, 84,
 72600, 75600,288000, 34,
     0, 12630,277200, 16,
 41400, 48900,277200, 10,
 59520, 63000,270000, 84,
 72600, 74400,270000, 16,
 28680, 33000,264600, 10,
 33000, 40800,264600, 34,
 46800, 59520,252000, 84,
 11160, 12300,244800, 14,
 73500, 74400,241200, 34,
 40800, 43200,239400, 34,
     0,  1200,237600, 16,
 50400, 56400,237600, 84,
 84900, 86400,237600, 16,
 43200, 48600,230400, 34,
 48600, 51900,226800, 34,
 83400, 84900,226800, 16,
 21960, 25200,223200, 10,
 72000, 73500,221400, 34,
 73932, 74160,219300, 16,
 25200, 28680,216000, 10,
 28680, 30300,216000, 83,
 71160, 72000,214200, 34,
 72000, 73932,214200, 16,
 82320, 83400,212700, 16,
     0,  8760,210600, 14,
 69900, 71160,208800, 34,
  6120,  6870,207000, 14,
  8760, 11160,205200, 14,
 11160, 11400,205200, 10,
 80340, 82320,202500, 16,
 18000, 21960,201600, 10,
 50520, 51900,199800, 83,
 51900, 69900,199800, 34,
 11400, 12000,198000, 10,
 79680, 80340,198000, 16,
 74160, 79080,197400, 16,
     0,  6120,194400, 14,
 21960, 23400,194400, 51,
 43500, 48600,190800, 83,
 54900, 56700,190800, 34,
 79080, 79680,189900, 16,
 12000, 18000,189000, 10,
 82320, 84000,189000, 14,
 56700, 61200,185400, 34,
  7350,  9060,181800, 63,
 61200, 65640,181800, 34,
     0,  4920,180000, 14,
  4920,  6000,180000, 63,
 23400, 24480,180000, 51,
 84000, 86400,180000, 14,
 48600, 50520,174600, 83,
     0,  4020,172800, 14,
 84900, 86400,172800, 14,
 65430, 65640,171000, 40,
 65640, 68700,171000, 34,
 68700, 69000,171000, 31,
  6000,  7350,169200, 63,
 30300, 33000,169200, 83,
   600,  3120,165600, 14,
 43200, 43500,162000, 83,
 24480, 26520,160200, 51,
 78870, 79080,158400, 31,
 78750, 78870,157500, 31,
 69000, 69840,156600, 31,
 33000, 36600,151200, 83,
 36600, 38820,144000, 83,
 55560, 56700,144000,  8,
 56700, 58800,144000, 40,
 33300, 34500,143100, 51,
     0,  9060,132300,  0,
  9060,  9240,132300, 63,
 69690, 69840,131400, 52,
 16200, 16890,129600, 63,
 78240, 78750,129600, 31,
 78750, 79200,129600, 45,
 23520, 26520,127800,  7,
 26520, 27900,127800, 51,
     0,  7200,126000,  0,
 79200, 82140,126000, 45,
 82140, 82320,124200, 45,
 82320, 84600,124200,  0,
  9240,  9780,122400, 63,
 38820, 39600,122400, 83,
 43200, 44400,122400, 30,
 27900, 33300,120600, 51,
 33300, 35580,120600, 49,
  2580,  5070,118800,  0,
 54660, 55560,118800,  8,
 84600, 85500,115500,  0,
 44400, 47700,115200, 30,
 85500, 86400,112800,  0,
 50250, 50520,110700, 30,
  8700,  9780,110400, 81,
  9780, 16200,110400, 63,
 16200, 17100,108000,  7,
 65430, 69690,108000, 52,
 39600, 43200,104400, 83,
 70800, 75300,104400, 31,
 17100, 21180,102600,  7,
 35580, 37800,102600, 49,
 47700, 50250,102600, 30,
     0,   240,100800,  0,
  5070,  6000,100800, 81,
 21180, 23520,100800,  7,
 28380, 28800,100800, 38,
 75300, 78240,100800, 31,
 69330, 70800, 99000, 31,
  6900,  8700, 98100, 81,
 58200, 58800, 97200, 26,
 54300, 54660, 93600,  8,
 54660, 58200, 93600, 26,
 66120, 67920, 93600, 52,
 38700, 39600, 91800, 49,
 67920, 69330, 91800, 52,
  6000,  6900, 90000, 81,
  2580,  3060, 85500, 67,
 37800, 38700, 84600, 49,
 76500, 77100, 84600, 88,
 20520, 21180, 82200, 78,
   240,   510, 79200,  0,
 57300, 57720, 79200, 74,
 21180, 22380, 77400, 38,
 71400, 72900, 76500, 88,
 67920, 69300, 75900, 88,
   510,  3060, 75600,  0,
 72900, 74040, 73800, 88,
 28110, 28380, 72000, 38,
 74040, 76500, 70200, 88,
 69300, 71400, 69000, 88,
 11820, 12120, 68400,  5,
 67920, 68400, 66600, 76,
 20520, 20760, 64800, 60,
 22380, 22710, 63000, 38,
 68400, 71400, 58200, 76,
 17880, 19200, 57600, 78,
 57300, 57900, 57600, 40,
 71400, 72900, 56700, 76,
 16620, 17880, 55800, 78,
 19200, 20160, 55800, 78,
 46200, 48600, 54000, 24,
 62100, 65700, 51600, 40,
 42720, 46200, 50400, 24,
 27000, 28110, 48600, 38,
 60300, 62100, 46200, 40,
     0,   510, 45000, 62,
 20160, 20760, 45000, 78,
 25200, 27000, 45000, 38,
 76020, 76800, 45000, 62,
 22710, 24960, 43200, 38,
 65700, 67920, 43200, 40,
 75150, 75780, 42600, 32,
 75780, 76020, 42600, 62,
 41460, 42720, 39600, 46,
 22470, 22710, 36000, 60,
 24960, 25200, 36000, 38,
 28110, 28530, 36000, 22,
 85800, 86400, 36000, 62,
  6000, 11820, 35700,  5,
 72510, 73080, 30600, 32,
 48600, 54300, 28800,  8,
 81900, 85800, 27000, 62,
 28530, 33300, 25200, 22,
 33300, 38700, 25200, 46,
 65700, 67184, 22500, 59,
 67184, 67920, 22500,  3,
 75000, 75150, 21600, 32,
 25200, 25260, 19800, 21,
 65700, 66330, 16200, 74,
 57900, 60300, 14400, 40,
 65700, 66330, 10800, 59,
 77280, 78000,  9900, 62,
     0,  7200,  7200, 67,
 66900, 67920,  7200, 74,
 73080, 75000,  7200, 32,
 75000, 76800,  7200, 35,
 76800, 77280,  7200, 62,
 79200, 81900,  7200, 62,
 78000, 79200,  6300, 62,
 25260, 25920,  5400, 21,
 12900, 16620,     0, 78,
 16620, 16800,     0, 60,
 25920, 29100,     0, 21,
 52800, 54300,     0, 86,
 64200, 65700,     0, 59,
  9540, 11820, -6300, 17,
 11820, 12900, -6300, 78,
 54300, 58560,-11700, 74,
 16800, 18300,-14400, 60,
 21000, 22470,-14400, 60,
 64200, 64680,-14400, 74,
 65700, 66900,-14400, 74,
 66900, 67920,-14400,  3,
 81900, 85800,-14400, 67,
 38700, 41460,-21600, 46,
 41460, 42600,-21600, 86,
     0,  1200,-25200, 67,
 85800, 86400,-25200, 67,
 51300, 52800,-28800, 86,
 57300, 58560,-28800, 59,
 72000, 73920,-32400,  3,
 76800, 78720,-32400,  4,
 61800, 64680,-36000, 59,
 21000, 29100,-39600, 55,
 17700, 18300,-39600, 36,
 18300, 21000,-39600, 60,
 29100, 30120,-39600, 42,
 34500, 38700,-39600, 75,
 42600, 46200,-39600, 86,
 63300, 63600,-42000, 59,
 67920, 72000,-43320,  3,
 17400, 17700,-52200, 36,
 73920, 76800,-54000,  4,
 61800, 65700,-57600, 74,
 65700, 67920,-57600, 73,
 30120, 30900,-61200, 42,
 58560, 58950,-65700, 59,
 30900, 32700,-68400, 42,
 38700, 39000,-68400, 27,
 58560, 58950,-69300, 59,
 56400, 57300,-72000, 48,
 45300, 46200,-79200, 29,
 46200, 51300,-79200, 86,
 32700, 35100,-86400, 42,
  6000,  9540,-87780, 17,
  9540, 13500,-87780, 36,
 39000, 42600,-88200, 27,
 42600, 45300,-88200, 29,
 51300, 53700,-88200, 48,
 58560, 60300,-88500, 59,
     0,  6000,-91800, 17,
 76800, 78720,-91800, 12,
 78720, 85800,-91800,  4,
 85800, 86400,-91800, 17,
 35100, 36900,-95400, 42,
 16920, 17400,-98100, 36,
 17400, 22020,-98100, 47,
 72000, 76800,-100800, 12,
 36900, 38100,-105000, 42,
 45300, 53700,-106200, 42,
 53700, 56400,-106200, 48,
 56400, 57600,-106200, 72,
 16500, 16920,-108000, 36,
 60300, 63360,-108000, 59,
 63360, 64200,-108000, 77,
 38100, 39000,-112200, 42,
 22020, 26520,-118800, 20,
 44100, 45300,-118800, 42,
 39000, 44100,-126000, 42,
 12600, 13500,-129600, 37,
 30120, 33720,-132300, 69,
 15360, 16500,-133200, 36,
 64200, 69000,-133200, 77,
 76800, 82800,-133200, 66,
 82800, 84000,-133200, 71,
 10800, 12600,-142500, 37,
 33720, 39600,-143100,  1,
     0,  6000,-144000, 71,
  6000, 10800,-144000, 37,
 13920, 15360,-144000, 36,
 84000, 86400,-144000, 71,
 51000, 53700,-151200, 15,
 56400, 57600,-151200, 50,
 57600, 59115,-151200, 72,
 17400, 18000,-154800,  9,
 18000, 23700,-154800, 23,
 28800, 30120,-154800, 68,
 12300, 13920,-158400, 36,
 59115, 64200,-163800, 72,
 64200, 69000,-163800, 25,
 69000, 73200,-163800, 77,
 73200, 76800,-163800, 54,
 10800, 12300,-165600, 36,
 16200, 17400,-167400,  9,
 55200, 56400,-172800, 50,
     0,  8400,-173400, 64,
  9600, 10800,-176400, 36,
 14700, 15360,-176400, 41,
 15360, 16200,-176400,  9,
 76800, 79200,-180000, 39,
 21600, 28800,-182700, 68,
 28800, 29400,-182700, 85,
  8700,  9600,-183600, 36,
 13800, 14700,-183600, 41,
     0,  6600,-185400, 64,
 21600, 22200,-189000, 13,
 29400, 30420,-190800, 85,
 12600, 13800,-191400, 41,
 13800, 14400,-191400, 33,
     0,  5700,-192600, 64,
  7800,  8700,-194400, 36,
 16200, 18000,-194400, 65,
 54180, 55200,-194400, 50,
 30420, 31800,-196200, 85,
 22200, 23400,-198000, 13,
 42600, 46200,-198000, 15,
 51000, 54180,-198000, 50,
 54180, 55200,-198000, 57,
 14400, 15600,-203400, 33,
 31800, 39600,-203400, 85,
 39600, 40500,-203400, 15,
 63000, 64800,-205200,  6,
 64800, 73200,-205200, 79,
 79200, 84000,-205200, 39,
 11520, 12600,-207000, 41,
 18000, 19800,-207000, 65,
 23400, 24600,-208800, 13,
     0,  4800,-210600, 64,
  4800,  7800,-210600, 36,
 84000, 86400,-210600, 64,
 15600, 16500,-212400, 33,
 55200, 59115,-216000, 57,
 73200, 76800,-216000, 44,
 19800, 21600,-219600, 65,
 54600, 55200,-219600, 19,
 59115, 59700,-219600,  6,
 53700, 54600,-228900, 19,
 59700, 60300,-228900,  6,
 21600, 24600,-230400, 65,
 24600, 32520,-230400, 13,
 40500, 42600,-230400, 15,
 42600, 46200,-230400, 28,
 46200, 52320,-230400, 15,
 48600, 49200,-234000, 19,
 60300, 60600,-234000,  6,
  7800, 11520,-243000, 41,
 11520, 16500,-243000, 70,
 53100, 53700,-243000, 19,
 60600, 63000,-243000,  6,
 63000, 64800,-243000, 61,
 79200, 84000,-243000, 82,
 16500, 23700,-252000, 33,
 49200, 53100,-252000, 19,
 53100, 61200,-252000, 80,
     0,  4800,-270000, 82,
 12600, 16500,-270000, 43,
 23700, 32520,-270000, 87,
 32520, 40500,-270000, 13,
 40500, 49200,-270000, 56,
 64800, 76800,-270000, 61,
 76800, 84000,-270000, 44,
 84000, 86400,-270000, 82,
  2700,  4800,-273600, 82,
     0, 12600,-297000, 43,
 27600, 49200,-297000, 18,
 49200, 64800,-297000,  2,
 12600, 27600,-306000, 53,
     0, 86400,-324000, 58,
};




